/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package outils;

import exceptions.ReadException;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Cette classe permet d'extraire le contenu
 * d'un fichier texte
 * @author D.Romain
 * @author O.Riad
 */
public class ExtracteurFichier implements Iterator<String> {

    private FileReader file;
    private BufferedReader buffer;
    private String line;

    /**
     * Constructeur de la classe
     * @param fileName chemin du ficher
     * @throws Exception délegue une exception si le fichier n'est pas trouvé
     */
    public ExtracteurFichier(File fileName) throws ReadException {
        try {
            this.file = new FileReader(fileName);
        } catch (FileNotFoundException ex) {
            throw new ReadException();
        }
        buffer = new BufferedReader(this.file);
        this.line = lireLigne();
    }

    /**
     * Renvois une ligne du fichier
     * @return String d'une ligne
     */
    private String lireLigne() {

        String s = "";
        try {
            s = buffer.readLine();
        } catch (IOException ex) {
            Logger.getLogger(ExtracteurFichier.class.getName()).log(Level.SEVERE, null, ex);
        }
        return s;

    }

    /**
     * Méthode permettant de savoir si il reste une
     * ligne à lire.
     * @return true si il reste une ligne
     */
    @Override
    public boolean hasNext() {
        return this.line != null;
    }

    /**
     * Renvois une ligne
     * @return String d'une ligne
     */
    @Override
    public String next() {
        String retour = this.line;
        this.line = lireLigne();
        return retour;
    }

    @Override
    public void remove() {
        
    }
}
